This invention relates to customizing tasks that provide a deterministic response in conjunction with an executing application program, and, more particularly, to producing customized responses that can be used in lieu of or in addition to default responses.
An application extension manager is a program that extends or enhances the functionality of a separately active application program. Customarily, the functionality that is being enhanced is the user interface. One type of enhancement may include redefining one or more keyboard keys for specific input events Other enhancements may include redefining output responses for specific events. An event my be triggered by activity internal to or external from an executing application. For example, an event may be initiated by user activity (e.g., a key stroke upon the computer keyboard) to a running application. Also, an event may be derived from the execution of a particular triggering line of code within an executing program. An event may also originate outside of any executing application such as from the system clock. Regardless of its origin, an event is defined as stimuli which causes the processor (otherwise referred to herein as the execution unit) to execute a set of instructions which defines a certain response. Such a certain response is also referred to herein as a deterministic response. Upon receiving a specific event, the processor preferably executes a set of instructions which defines a response to the specific event. Preferably, each event will produce a unique response.
An application extension manager is described in U.S. patent application Ser. No. 08/971,256, which is herein incorporated by reference. An example of an application extension manager is the Self Voicing Kit (SVK), which is currently available on the Internet at the following URL:
http://alphaworks.ibm.com/tech/svk
The Self Voicing Kit enhances a visually displayed user interface of a Java application by automatically speaking what is displayed Upon receiving a unique event, the processor executes a set of instructions read from the SVK to produce an audio output when presented to an appropriate synthesizer. There may be instances, however, where a user may want to modify the default audio output or response of an application extension manager such as the SVK. For example, the user may want to replace the default audio output or response of the application extension manger with a new customized audio output or response. It is important to note that the default response of the separately active application is different from the default response of the application extension manager. For example, suppose that the separate application is a hockey game. The separate application may have a default response of displaying the score of the hockey game when a goal is scored. The application extension manager may have a default response that describes a goal with the sound xe2x80x9cgoal!xe2x80x9d Perhaps the user would rather hear xe2x80x9cscores!xe2x80x9d xe2x80x9cScores!xe2x80x9d would be the customized response of the application extension manager. The user would have to customize the application extension manager by modifying the set of instructions that define the default response of the application extension manager so that when a goal occurs in the hockey game the application vocalizes the sound of xe2x80x9cscores!xe2x80x9d instead of xe2x80x9cgoal!xe2x80x9d However, a disadvantage is that the user would have to modify the default response of the application extension manager each time a new response is needed. That is, the user would have to modify the set of instructions that define the default response.
Possibly the user may want to hear xe2x80x9cgoal!xe2x80x9d if the home team scores but would want to here xe2x80x9cscores!xe2x80x9d if the visiting team scored. The disadvantage is that the application extension manager does not allow the execution of new responses, i.e. xe2x80x9cscores!xe2x80x9d to events that already had a default response, i.e. xe2x80x9cgoal!xe2x80x9d without modifying the default response of the application extension manager.
Using another example, the application extension manager may have a default response that does not impart any sound response whenever a goal is scored. However, the user would like to hear the sound of xe2x80x9cgoal!xe2x80x9d when a goal is scored instead of silence. A disadvantage though is that the user would have to modify the set of instructions that defines the default response of the application extension manager in order for the application to produce the sound xe2x80x9cgoal!xe2x80x9d That is, the user would have to modify the default response of the application extension manager with a new response.
Another disadvantage is that the default response of the application extension manager would have to be modified when a user would like to prepend a new response to the default response corresponding with an event. It should be noted that the term xe2x80x9cprependxe2x80x9d is used herein to mean appending a response to the beginning of a predefined response. For example, the hockey application might reply with xe2x80x9cgoal!xe2x80x9d when either teams scores. However, the user would like to which team scored in conjunction with xe2x80x9cgoal!xe2x80x9d Hence, the user might like to hear xe2x80x9chome team goal!xe2x80x9d or xe2x80x9cvisitor goal!xe2x80x9d The user would have to modify the default response of the application extension manager, i.e. the set of instructions that defines the default response, in order to prepend a new response to the default response.
The disadvantages described above concerning an audio system may also apply to a palpable output system, such as one employing a Braille reading surface. In relation to an audio system, instead of the output being audio, the output is palpable. Palpable systems have similar disadvantages. A customized response requires modification of the default response of the application extension manager whether the customized response is a different response from the default response, a new response not provided by the default response, a response prepended to the default response or a conditional response with respect to the default response.
It is therefore an object of this invention to create a customized response without modifying a default response of an application extension manager in which the customized response is a new or augmented response.
It is a further object of the invention to enable a customized response to be prepended to the default response of an application extension manager without modifying the default response.
It is a further object of the invention to create a customized response that is a conditional response with respect to the default response.
The system, method, and program of the invention provides enhanced functionality to an application program running on a computer system without modifying the application program and without modifying an application extension manager that is running concurrently with the application program. The application extension manager may be a separate system program that is present for every application running in the system, or it may be an extension to the operating system. In a preferred embodiment, the functionality of a user interface of an application program is enhanced. For example, an extension to the user interface may entail creating a different deterministic response for a specific event. More specifically, a different response can be outputted other than the default response of the application extension manager to an audio speaker or palpable surface. It should be noted that although the preferred embodiments herein illustrate the ability to enhance the functionality of the user interface of an application program, the invention as described and claimed herein is also applicable to enhancing other areas of the program""s functionality such as tracing or logging functionality or other functionality that involves events and associated tasks.
The application extension manager monitors all events regardless of whether or not the events are originating from within the application program or are originating external to the application. Each event that is being monitored is capable of causing the processor, i.e., an executing unit, to execute instructions. The application extension manager associates with each event a corresponding default task and one or more corresponding customized tasks. Each task is a set of executable instructions which cause a deterministic response. A default task is a set of instructions that defines a default response. A second type of task is a customized task. A customized task is a set of instructions that defines a customized response. Upon an occurrence of an event, at least one of the corresponding tasks is executed. In this way, an application extension manager can provide additional functionality, through each deterministic response, to an executing application program without modifying, i.e., independently of any modification to, the application program or the application extension manager.
Furthermore, each of the tasks could be executed according to an ordered list of the tasks such as a linked list. As such, each event has an ordered list of tasks associated with that particular event. In the ordered list of tasks that comprises tasks associated with a particular event, there exists one default task. The default task may, in some embodiments, have the capability of defining no response. Furthermore, the ordered list may or may not have one or more associated customized tasks. In other words, for some events, there may not be a customized response. In a preferred embodiment, the tasks are executed on a last-in-first-out basis. However, other embodiments may comprise other orderings. In the preferred embodiment, the default task for a specific event specified by the application extension manager is at the bottom of the list, which in some embodiments may be a stack. As such, the default task will get executed last. Other customized tasks will be executed in the reverse order in which they were added to the linked list. That is, the default task is the first task put onto the ordered list with the customized tasks put on top of the default task.
Each task has instructions, within its set of executable instructions, for indicating to the application extension manager such as through a returned value from task execution, whether or not the application extension manager is to execute the next task on the ordered list of tasks. If several tasks are to be executed in response to a given event, this enables multiple responses to prepended together for a single event. If one of the multiple tasks includes the default task of the application extension manager, this enables a customized response to be prepended to the default response of the application extension manager. If a customized response indicates that the next task is not to be executed, i.e., the customized task inhibits the execution of all later ordered tasks, including the default task, this enables the customized response to be a new response.